package com.boat.starter.satoken.config.props;

import org.springframework.boot.context.properties.ConfigurationProperties;

import com.boat.starter.satoken.constant.AuthConsts;
import com.boat.starter.satoken.constant.AuthConsts.AuthType;

import lombok.Data;

/**
 * 认证配置
 * 
 * @author 周江
 *
 */
@Data
@ConfigurationProperties(prefix = AuthConsts.PREFIX)
public class AuthProperties {

	private String type = AuthType.SATOKEN;

	private SaTokenProperties satoken = new SaTokenProperties();

	@Data
	public class SaTokenProperties {
		/** token 名称（同时也是 cookie 名称） */
		private String tokenName = "Authorization";

		/** token 有效期（单位：秒），7天。此值如不设置默认30天，-1代表永不过期 */
		private long timeout = 7 * 24 * 60 * 60;

		/** token前缀 */
		private String tokenPrefix = "Bearer";

		/** 允许动态设置 token 有效期 */
		private boolean dynamicActiveTimeout = true;

		/** 关闭 从请求体中读取token */
		private boolean readBody = false;

		/** 关闭 cookie 鉴权 从根源杜绝 csrf 漏洞风险 */
		private boolean readCookie = false;

		/** jwt密匙，可在配置中进行覆盖 */
		private String jwtSecretKey = "qazwsxedcrfvtgbyhnujmikolp";

		/** 不做权限验证，需要排除掉的url，逗号分割 */
		private String excludes;

		/** 排除掉一些公共框架引入的urls */
		private String commonExcludes = "/doc.html,/webjars/**,/v3/api-docs/**,/favicon.ico";

	}
}
